package cn.wen.javax.security;

/**
 * Title: 用户工厂（接口）
 * <p>
 * Description:
 * <p>
 * Copyright: Copyright (c) 2010-2012
 * 
 * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
 * @version Revision：1.0 Date：2012/3/22 Description：初完成。
 *          <P>
 */
public interface IUserFactory<T extends IUser> {
    
    /**
     * @return 实现统一用户接口的Class类型。
     */
    Class<T> getUserClass();

    /**
     * 实例化一个用户实体并返回。
     */
    T newUser();

    /**
     * 获取当前Session已登记的用户实体。
     * 
     * @see #takeCurrentUser(boolean)
     */
    T takeCurrentUser();

    /**
     * 获取当前Session已登记的用户实体。若未登记并flag为true时，返回一个原生的用户实体。
     * 
     * @param flag 强制标识
     * @return 用户实体
     */
    T takeCurrentUser(boolean flag);

}
